home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Curio City 4
/
CURIO4A.bin
/
mac
/
NET
/
World Talk for Power PC
/
WTV151POW.sea
/
WorldTALK
/
KNET.HSC
< prev
next >
Wrap
Text File
|
1996-05-01
|
8KB
|
399 lines
# 修正履歴
# ----------+-----------------------------------------------
# Ver1.0
#
# 外部変数
# LOGINSTATUS -2 接続出来ないで終了
# -1 エラー発生で終了
# 0 実行中
# 1... アクセスポイント種別
#
# USERNAME ユーザーID
# PASSWORD パスワード
#
自動ログイン() :
DISPLOGX('スクリプトバージョン:V1.0')
LOGINSTATUS = 0
ONLINE = 0
繰返回数 = 0
LOGONCOMMAND= 'COPER'
JUMPCODE = 'JWWWDIRECT'
ON_ERROR( エラー発生 )
MODEMPARAM(コマンド1,コマンド2,ゼロ発信,出力遅延時間,文字遅延,タイムアウト,通信ポート,ダイアル種別,ゼロ発信文字列)
IF USERNAME == "" | PASSWORD == ""
HOSTID("USERNAME","PASSWORD")
END
#使用できる番号を接続グループからさがす
番号 = 1
番号検索:
定義状態 = TELNO(HOSTGROUPNAME,番号,'電話番号','名前','アクセスポイント種別')
IF 定義状態 == 0
番号 = 番号 + 1
IF 番号 > 20
LOGINSTATUS = -2
RETURN
END
GOTO 番号検索
END
DISPTELNO(電話番号,アクセスポイント種別)
# オートログインタイムアウトタイマースタート
STARTTIMER()
# 念のために電話を切る
# DISPSTATE(1)
# ONHOOK()
# 回線断の状態にする
SETLINEOFF()
SETRECTIMEOUT(3000)
SETCHARDELAY(文字遅延)
アクセスポイント巡回:
IF 番号 > 20
LOGINSTATUS = -2
RETURN
END
繰返し = 1
定義状態 = TELNO(HOSTGROUPNAME,番号,'電話番号','名前','アクセスポイント種別','通信速度','BL','SB','PA','XF','E','KA','CI','CO','RC','RW')
IF 定義状態 == 0
番号 = 番号 + 1
GOTO アクセスポイント巡回
END
繰返し回数=RC
SETCOMPARAM( 通信速度, SB, BL, PA, XF, E, KA, CI, CO )
DISPTELNO(電話番号,アクセスポイント種別)
IF ゼロ発信
コマンド1 = コマンド1 - 'X4' + 'X3'
END
DISPSTATE(2)
WAIT(500)
IF 出力遅延時間 > 0
WAIT(出力遅延時間*1000)
END
IF コマンド1 != ""
SEND(コマンド1)
受信データ = RECV()
OK待ち1:
受信データ = RECV()
IF STREXT(受信データ,0,2) != 'OK'
IF 受信データ == ''
GOTO OK待ち1
END
エラーメッセージ = "モデム初期化コマンド1でエラーが発生しました。\nコマンド("+コマンド1+')'
GOTO エラーメッセージ表示
END
IF 出力遅延時間 > 0
WAIT(出力遅延時間*1000)
END
END
IF コマンド2 != ""
SEND(コマンド2)
受信データ = RECV()
OK待ち2:
受信データ = RECV()
IF STREXT(受信データ,0,2) != 'OK'
IF 受信データ == ''
GOTO OK待ち2
END
エラーメッセージ = "モデム初期化コマンド2でエラーが発生しました。\nコマンド("+コマンド2+')'
GOTO エラーメッセージ表示
END
IF 出力遅延時間 > 0
WAIT(出力遅延時間*1000)
END
END
呼出しATコマンド = 'ATD' + ダイアル種別
IF ゼロ発信
DISPLOG('ゼロ発信:'+ゼロ発信文字列)
呼出しATコマンド = 呼出しATコマンド + ゼロ発信文字列
END
呼出しATコマンド = 呼出しATコマンド + 電話番号
ホスト呼び出し:
DISPSTATE(3)
IF 出力遅延時間 > 0
WAIT(出力遅延時間*1000)
END
SEND(呼出しATコマンド)
着呼確認 :
受信データ = RECV()
LEN = STRLEN(受信データ)
IF LEN == 0
GOTO 着呼確認:
END
$D = STREXT(受信データ,0,4)
IF $D == 'NO D'
DISPLOGX("モデムからの応答:"+受信データ)
エラーメッセージ = "モデムに電話回線が接続されていないようです。"
GOTO エラーメッセージ表示
END
IF $D == 'DELA' | $D == 'BLAC'
DISPLOGX("モデムからの応答:"+受信データ)
エラーメッセージ = "リダイヤル規制です。\n1分以上間隔をおいてください"
GOTO エラーメッセージ表示
END
IF $D == 'ERRO'
DISPLOGX("モデムからの応答:"+受信データ)
エラーメッセージ = "ダイヤルコマンドでエラーが発生しました。\nダイヤルコマンド("+呼出しATコマンド+')'
GOTO エラーメッセージ表示
END
IF $D == 'BUSY' | $D == 'NO C' | $D == 'HAND' | $D == 'OK'
DISPLOGX("モデムからの応答:"+受信データ)
GOTO ログイン失敗
END
IF STREXT(受信データ,0,7) != 'CONNECT'
GOTO 着呼確認
END
ONLINE = 1
# DIAL.LOGにホスト名、電話番号、"CONNECT XXXX"を保存
PUTCONNECTLOG(名前,電話番号,受信データ)
DISPSTATE(4)
WAIT(2000)
#LOGIN PROCESS
SEND(LOGONCOMMAND)
ログオンコマンド確認 :
受信データ=RECV()
LEN=STRLEN(受信データ)
POS=STRPOS(受信データ,'USER ID :')
IF LEN == POS
POS=STRPOS(受信データ,'サービスを終了')
IF LEN != POS
エラーメッセージ=受信データ
GOTO エラーメッセージ表示
END
POS=STRPOS(受信データ,'ただ今')
IF LEN != POS
エラーメッセージ=受信データ
GOTO エラーメッセージ表示
END
POS=STRPOS(受信データ,'システム調整')
IF LEN != POS
エラーメッセージ=受信データ
GOTO エラーメッセージ表示
END
POS=STRPOS(受信データ,'PLEASE')
IF LEN != POS
エラーメッセージ=受信データ
GOTO エラーメッセージ表示
END
POS=STRPOS(受信データ,'err')
IF LEN != POS
エラーメッセージ='このアクセスポイントではWorldTALKを使用できないようです。別のアクセスポイントを選択してください。'
GOTO エラーメッセージ表示
END
POS=STRPOS(受信データ,'NO C')
IF LEN != POS
エラーメッセージ='回線が切断されました。もう一度接続してみてください。'
GOTO エラーメッセージ表示
END
GOTO ログオンコマンド確認
END
SEND(USERNAME)
RECV()
ユーザー名確認:
受信データ=RECV()
IF 受信データ == ' ' | 受信データ == ''
GOTO ユーザー名確認
END
IF STREXT(受信データ,0,12) == 'IDまたはPASS'
エラーメッセージ="ユーザIDを確認してください"
GOTO エラーメッセージ表示
END
SEND(PASSWORD+','+JUMPCODE)
ログインチェック :
受信データ = RECV()
IF 受信データ == '' | 受信データ == ' '
GOTO ログインチェック
ELSE
LEN=STRLEN(受信データ)
IF STREXT(受信データ,0,12) == 'IDまたはPASS'
エラーメッセージ='パスワードを確認してください'
GOTO エラーメッセージ表示
END
END
ログインメッセージ確認1:
LEN = STRLEN(受信データ)
POS=STRPOS(受信データ,'回線を切って')
IF POS != LEN
エラーメッセージ='二重ログインしているようです。'
GOTO エラーメッセージ表示
END
POS = STRPOS(受信データ,'プロファイル')
IF POS != LEN
GOTO 正常終了
ELSE
POS = STRPOS(受信データ,'リターンキーを押して下さい')
IF POS != LEN
SEND('')
受信データ=RECV()
GOTO ログインメッセージ確認1
END
POS = STRPOS(受信データ,'お知らせを')
IF POS != LEN
SEND('N')
GOTO WWWお知らせ終了
END
POS = STRPOS(受信データ,'WWW')
IF POS != LEN
GOTO WWWサービス
END
POS = STRPOS(受信データ,'コマンド=')
IF POS != LEN
SEND('N')
GOTO WWWお知らせ終了
END
CHECKMESSAGE(受信データ)
受信データ=RECV()
GOTO ログインメッセージ確認1
END
正常終了 :
# プロファイルを修正
SEND('N')
RECV()
WWWお知らせ :
受信データ = RECV()
IF STRPOS(受信データ,'お知らせを') != STRLEN(受信データ)
SEND('N')
GOTO WWWお知らせ終了
ELSE
CHECKMESSAGE(受信データ)
GOTO WWWお知らせ
END
WWWお知らせ終了:
WWWサービス :
受信データ = RECV()
IF STRPOS(受信データ,'番号またはコマンド') != STRLEN(受信データ)
SEND('2')
RECV()
TIMEOUTCHK:
受信データ=RECV(5)
IF 受信データ == ''
GOTO TIMEOUTCHK
END
IF 受信データ != '@TIMEOUT'
エラーメッセージ=受信データ
GOTO エラーメッセージ表示
END
# 製品番号を出力
WAIT(3000)
SENDVERSION()
STATUS = GETMESSAGE()
IF STATUS != 1
エラーメッセージ="バージョンチェックでエラーが発生しました。メッセージを確認してください。"
GOTO エラーメッセージ表示
END
SEND(USERNAME)
RECV()
GOTO WWWサービス終了
ELSE
GOTO WWWサービス
END
WWWサービス終了:
SETLINEON()
LOGINSTATUS = アクセスポイント種別
FLUSHPORT()
RETURN
ログイン失敗 :
IF ONLINE == 1
DISPSTATE(1)
ONHOOK()
ONLINE = 0
END
IF 繰返し < 繰返し回数
繰返し = 繰返し + 1
DISPLOGX('繰返し:'+STRING(繰返し)+'回目')
IF RW > 0
WAIT(RW*1000)
END
# オートログインタイムアウトタイマースタート
STARTTIMER()
GOTO ホスト呼び出し
ELSE
番号 = 番号+1
DISPLOGX("次の電話番号へ")
# オートログインタイムアウトタイマースタート
STARTTIMER()
GOTO アクセスポイント巡回
END
エラーメッセージ表示:
IF ONLINE == 1
DISPSTATE(1)
ONHOOK()
END
MESSAGEBOX(エラーメッセージ)
LOGINSTATUS = -1
END
エラー発生() :
MESSAGEBOX("エラー発生"+_ERR_C+":"+STRING(_ERR_D))
IF ONLINE == 1
DISPSTATE(1)
ONHOOK()
END
LOGINSTATUS = -1
END
CHECKMESSAGE(受信データ) :
DISPLOG(受信データ)
PUTLOG(受信データ)
RETURN 0
END
GETMESSAGE() :
# \MSGSを受信
MSGS:
DATA = RECV()
LEN = STRLEN(DATA)
IF STRPOS(DATA,'MSGS') == STRLEN(DATA)
GOTO MSGS
END
INFOMSG = ''
# \MSGEを受信
MSGE:
DATA = RECV()
LEN = STRLEN(DATA)
IF STRPOS(DATA,'MSGE') == STRLEN(DATA)
IF INFOMSG != ''
INFOMSG = INFOMSG + "\n" + DATA
ELSE
INFOMSG = DATA
END
DISPLOG(DATA)
PUTLOG(DATA)
GOTO MSGE
END
DATA = RECV()
IF DATA != 'OK'
DISPSTATE(1)
ONHOOK()
MESSAGEBOX( INFOMSG )
RETURN 0
END
RETURN 1
END